# -*- coding: utf-8 -*-
"""
快速测试优化功能
专注于验证三个关键优化是否生效
"""

import asyncio
import logging
from datetime import datetime
from src.crawler.crawler_engine import CrawlerEngine


async def quick_test_optimizations():
    """快速测试所有优化功能"""
    
    # 设置日志
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s [%(levelname)s] %(message)s'
    )
    logger = logging.getLogger(__name__)
    
    print("🚀 快速测试优化功能")
    print("=" * 50)
    
    # 测试1: 验证超时配置
    print("\n1️⃣ 测试网络超时优化...")
    crawler = CrawlerEngine()
    
    try:
        await crawler.start(headless=True)
        
        # 检查超时配置
        page_timeout = crawler.browser_manager.page.default_timeout
        print(f"   ✅ 页面默认超时: {page_timeout/1000}秒 (应为90秒)")
        
        # 测试页面导航
        success = await crawler.browser_manager.navigate_to("https://sz.pupuwang.com/siting/list?industryCode=11")
        if success:
            print("   ✅ 页面导航成功 (90秒超时生效)")
        else:
            print("   ❌ 页面导航失败")
            
    except Exception as e:
        print(f"   ❌ 超时测试失败: {e}")
    
    # 测试2: 验证日期过滤器
    print("\n2️⃣ 测试日期过滤功能...")
    try:
        date_filter = crawler.date_filter
        print(f"   ✅ 日期过滤器已初始化，截止日期: {date_filter.cutoff_date.strftime('%Y-%m-%d')}")
        
        # 测试日期解析
        test_date = "07-16"
        is_valid = date_filter.is_within_time_limit(test_date)
        print(f"   ✅ 日期解析测试: {test_date} -> {'有效' if is_valid else '过期'}")
        
    except Exception as e:
        print(f"   ❌ 日期过滤测试失败: {e}")
    
    # 测试3: 验证CSV导出器
    print("\n3️⃣ 测试CSV导出功能...")
    try:
        csv_exporter = crawler.csv_exporter
        print(f"   ✅ CSV导出器已初始化，输出目录: {csv_exporter.output_dir}")
        
        # 测试数据样本显示
        test_data = [
            {
                'title': '测试商铺1',
                'contact_person': '张先生',
                'contact_info': '138****1234',
                'acceptable_rent': '100-200元/㎡',
                'publish_date': '07-16',
                'city': '深圳',
                'business_type': '餐饮'
            }
        ]
        
        print("   ✅ 数据样本显示测试:")
        csv_exporter.print_data_sample(test_data, sample_size=1)
        
    except Exception as e:
        print(f"   ❌ CSV导出测试失败: {e}")
    
    # 测试4: 验证分页控制器
    print("\n4️⃣ 测试智能分页控制...")
    try:
        pagination_controller = crawler.pagination_controller
        print("   ✅ 智能分页控制器已初始化")
        
        # 模拟测试数据
        mock_page_data = [
            {'publish_date': '07-16', 'title': '新数据1'},
            {'publish_date': '07-15', 'title': '新数据2'},
            {'publish_date': '05-01', 'title': '旧数据1'},  # 超出30天
        ]
        
        should_continue = pagination_controller.should_continue_pagination(mock_page_data)
        print(f"   ✅ 分页控制测试: 应该继续分页 = {should_continue}")
        
    except Exception as e:
        print(f"   ❌ 分页控制测试失败: {e}")
    
    # 测试5: 简单爬取测试（只爬取第一页，不处理详情页）
    print("\n5️⃣ 测试简化爬取流程...")
    try:
        # 切换到深圳餐饮
        crawler.city_manager.switch_city("深圳")
        crawler.business_type_manager.switch_business_type("餐饮")
        
        # 分析分页
        pagination_info = await crawler.pagination_handler.analyze_pagination(crawler.browser_manager.page)
        print(f"   ✅ 分页分析: {pagination_info.get('pagination_type', '无分页')}")
        
        # 提取第一页数据（不处理详情页）
        page_data = await crawler.page_parser.extract_list_data(crawler.browser_manager.page)
        print(f"   ✅ 第一页数据提取: {len(page_data)} 条")
        
        # 应用时间过滤
        filtered_data = crawler.date_filter.filter_data_by_date(page_data)
        print(f"   ✅ 时间过滤结果: {len(filtered_data)} 条有效数据")
        
        # 测试CSV导出
        if filtered_data:
            csv_file = crawler.csv_exporter.export_to_csv(filtered_data, "深圳", "餐饮", append_mode=False)
            print(f"   ✅ CSV导出成功: {csv_file}")
            
            # 显示数据样本
            print("   📋 数据样本:")
            crawler.csv_exporter.print_data_sample(filtered_data, sample_size=3)
        
    except Exception as e:
        print(f"   ❌ 简化爬取测试失败: {e}")
    
    finally:
        await crawler.stop()
    
    print("\n" + "=" * 50)
    print("🎉 快速测试完成!")
    print("\n📋 优化功能验证结果:")
    print("   1️⃣ 网络超时优化: 90秒超时配置")
    print("   2️⃣ 日期过滤功能: 30天时间限制")
    print("   3️⃣ CSV导出功能: 自动导出和数据显示")
    print("   4️⃣ 智能分页控制: 基于时间的分页停止策略")
    print("   5️⃣ 简化爬取流程: 快速验证核心功能")


if __name__ == "__main__":
    asyncio.run(quick_test_optimizations())
